Page({
  data: {
    msgCount: 16,
    waitSendCount: 6,
    avatarUrl: ''
  },

  chooseAvatar() {
    const that = this;
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success(res) {
        const tempFilePaths = res.tempFilePaths;
  
        wx.uploadFile({
          url: 'http://47.94.6.186:3001/api/file/upload',
          filePath: tempFilePaths[0],
          name: 'img',
          header: {
            'token': wx.getStorageSync('token')
          },
          success(uploadRes) {
            console.log('上传响应:', uploadRes);
            console.log('响应状态码:', uploadRes.statusCode);
            console.log('响应数据类型:', typeof uploadRes.data);
            console.log('响应数据长度:', uploadRes.data.length);
            if (uploadRes.data && typeof uploadRes.data === 'string') {
              if (uploadRes.data.trim().startsWith('<!DOCTYPE html>') || uploadRes.data.trim().startsWith('<html>')) {
                wx.showToast({
                  title: '服务器返回HTML错误页面',
                  icon: 'none'
                });
                console.error('服务器错误响应:', uploadRes.data.substring(0, 200) + '...');
                return;
              }
            }

            try {
              const data = JSON.parse(uploadRes.data);
              console.log('解析后的数据:', data);
              // 尝试多种成功条件判断
              console.log('检查成功条件: code=' + data.code + ', success=' + data.success + ', fileUrl=' + data.fileUrl);
              if (data.code === '200' || data.code === 200 || data.success || data.fileUrl) {
                that.bindAvatar(data.fileUrl || data.data?.url);
              } else {
                wx.showToast({
                  title: '上传失败: ' + (data.message || JSON.stringify(data)),
                  icon: 'none'
                });
              }
            } catch (e) {
              wx.showToast({
                title: '数据格式错误',
                icon: 'none'
              });
              console.error('JSON解析错误:', e, '响应数据:', uploadRes.data);
              // 尝试显示原始响应
              wx.showModal({
                title: '原始响应',
                content: uploadRes.data.substring(0, 300) + '...',
                showCancel: false
              });
            }
          },
          fail(err) {
            wx.showToast({
              title: '上传失败: ' + JSON.stringify(err),
              icon: 'none'
            });
            console.error('上传失败:', err);
          },
          complete() {
            console.log('上传请求完成');
          }
        });

        // 临时测试：显示token是否存在
        const token = wx.getStorageSync('token');
        console.log('当前token:', token);
        if (!token) {
          wx.showToast({
            title: 'token不存在，请重新登录',
            icon: 'none'
          });
        }
      }
    });
  },

  bindAvatar(avatarUrl) {
    const that = this;
    console.log('开始绑定头像，URL:', avatarUrl);
    console.log('用户ID:', wx.getStorageSync('userid'));
    console.log('token:', wx.getStorageSync('token'));

    wx.request({
      url: 'http://47.94.6.186:3001/api/user/binduseravatar',
      method: 'GET', // 注意：通常修改操作应使用POST方法
      data: {
        userid: wx.getStorageSync('userid'),
        avatar: avatarUrl
      },
      header: {
        'token': wx.getStorageSync('token')
      },
      success(res) {
        console.log('绑定头像响应:', res);
        // 检查服务器响应是否为HTML错误页面
        if (res.data && typeof res.data === 'string') {
          if (res.data.trim().startsWith('<!DOCTYPE html>') || res.data.trim().startsWith('<html>')) {
            wx.showToast({ title: '服务器返回HTML错误页面', icon: 'none' });
            console.error('服务器错误响应:', res.data.substring(0, 200) + '...');
            return;
          }
        }

        // 解析响应数据（简化，假设服务器返回格式稳定）
        // 解析响应数据（假设服务器返回格式稳定，移除try-catch）
        const responseData = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;
        console.log('解析后的绑定响应数据:', responseData);

        // 尝试多种成功条件判断
        if (responseData.code === 200 || responseData.code === '200' || responseData.success) {
          // 为头像URL添加完整域名前缀
          if (avatarUrl && !avatarUrl.startsWith('http://') && !avatarUrl.startsWith('https://')) {
            avatarUrl = 'http://47.94.6.186:3001' + avatarUrl;
            console.log('修正后的头像URL:', avatarUrl);
          }

          // 更新头像URL数据
          that.setData({ avatarUrl: avatarUrl });

          // 头像URL格式检查与提示
          if (avatarUrl && (avatarUrl.startsWith('http://') || avatarUrl.startsWith('https://'))) {
            wx.showToast({ title: '头像绑定成功', icon: 'success' });
            console.log('头像更新成功，URL:', avatarUrl);
          } else {
            wx.showToast({ title: '头像URL格式不正确', icon: 'none' });
            console.error('头像URL格式不正确:', avatarUrl);
          }
        } else {
          const errorMsg = responseData.message || '绑定失败';
          wx.showToast({ title: errorMsg, icon: 'none' });
          console.error('头像绑定失败:', responseData);
        }
      },
      fail(err) {
        wx.showToast({
          title: '网络请求失败: ' + JSON.stringify(err),
          icon: 'none'
        });
        console.error('绑定头像失败:', err);
      },
      complete() {
        console.log('绑定头像请求完成');
      }
    });
  },
  onLoad() {
    this.getUserInfo();
  },

  getUserInfo() {
    const that = this;
    wx.request({
      url: 'http://47.94.6.186:3001/api/user/info',
      method: 'GET',
      data: {
        userid: wx.getStorageSync('userid')
      },
      header: {
        'token': wx.getStorageSync('token')
      },
      success(res) {
        if (res.data && typeof res.data === 'string') {
          if (res.data.trim().startsWith('<!DOCTYPE html>') || res.data.trim().startsWith('<html>')) {
            wx.showToast({
              title: '服务器返回HTML错误页面',
              icon: 'none'
            });
            console.error('服务器错误响应:', res.data.substring(0, 200) + '...');
            return;
          }
        }

        try {
          const responseData = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;
          if (responseData.code === 0) {
            that.setData({
              avatarUrl: responseData.data?.avatar || ''
            });
          } else {
            wx.showToast({
              title: '获取用户信息失败: ' + (responseData.message || '未知错误'),
              icon: 'none'
            });
          }
        } catch (e) {
          wx.showToast({
            title: '数据格式错误',
            icon: 'none'
          });
          console.error('JSON解析错误:', e, '响应数据:', res.data);
        }
      },
      fail(err) {
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
        console.error('获取用户信息失败:', err);
      }
    });
  },
});